diff --git a/system/database/drivers/interbase/interbase_driver.php b/system/database/drivers/interbase/interbase_driver.php
index 4dca7c8..17fcffa 100644
--- a/system/database/drivers/interbase/interbase_driver.php
+++ b/system/database/drivers/interbase/interbase_driver.php
@@ -58,7 +58,7 @@
 	 */
 	protected $_count_string = "SELECT COUNT(*) AS ";
 	protected $_random_keyword = ' Random()'; // database specific random keyword
-	
+
 	// Keeps track of the resource for the current transaction
 	protected $trans;
 
@@ -139,12 +139,12 @@
 		if (($service = ibase_service_attach($this->hostname, $this->username, $this->password)))
 		{
 			$version = ibase_server_info($service, IBASE_SVC_SERVER_VERSION);
-			
+
 			// Don't keep the service open
 			ibase_service_detach($service);
 			return $version;
 		}
-		
+
 		return FALSE;
 	}
 
@@ -203,7 +203,7 @@
 		$this->_trans_failure = ($test_mode === TRUE) ? TRUE : FALSE;
 
 		$this->trans = @ibase_trans($this->conn_id);
-		
+
 		return TRUE;
 	}
 
@@ -226,7 +226,7 @@
 		{
 			return TRUE;
 		}
-		
+
 		return @ibase_commit($this->trans);
 	}
 
@@ -398,7 +398,7 @@
 	protected function _field_data($table)
 	{
 		// Need to find a more efficient way to do this
-		// but Interbase/Firebird seems to lack the 
+		// but Interbase/Firebird seems to lack the
 		// limit clause
 		return "SELECT * FROM {$table}";
 	}
@@ -406,25 +406,16 @@
 	// --------------------------------------------------------------------
 
 	/**
-	 * The error message string
+	 * Error
 	 *
-	 * @return	string
-	 */
-	protected function _error_message()
-	{
-		return ibase_errmsg();
-	}
-
-	// --------------------------------------------------------------------
-
-	/**
-	 * The error message number
+	 * Returns an array containing code and message of the last
+	 * database error that has occured.
 	 *
-	 * @return	integer
+	 * @return	array
 	 */
-	protected function _error_number()
+	public function error()
 	{
-		return ibase_errcode();
+		return array('code' => ibase_errcode(), 'message' => ibase_errmsg());
 	}
 
 	// --------------------------------------------------------------------
@@ -603,12 +594,12 @@
 	{
 		// Keep the current sql string safe for a moment
 		$orig_sql = $sql;
-	
+
 		// Limit clause depends on if Interbase or Firebird
 		if (stripos($this->_version(), 'firebird') !== FALSE)
 		{
 			$sql = 'FIRST '. (int) $limit;
-			
+
 			if ($offset > 0)
 			{
 				$sql .= ' SKIP '. (int) $offset;
@@ -617,16 +608,14 @@
 		else
 		{
 			$sql = 'ROWS ' . (int) $limit;
-			
+
 			if ($offset > 0)
 			{
 				$sql = 'ROWS '. (int) $offset . ' TO ' . ($limit + $offset);
 			}
 		}
-		
-		$sql = preg_replace("`SELECT`i", "SELECT {$sql}", $orig_sql);
-		
-		return $sql;
+
+		return preg_replace('`SELECT`i', "SELECT {$sql}", $orig_sql);
 	}
 
 	// --------------------------------------------------------------------
@@ -641,7 +630,8 @@
 	{
 		@ibase_close($conn_id);
 	}
+
 }
 
 /* End of file interbase_driver.php */
-/* Location: ./system/database/drivers/interbase/interbase_driver.php */
\ No newline at end of file
+/* Location: ./system/database/drivers/interbase/interbase_driver.php */
